package modelo.comportamiento.tests.situaciones;

import org.junit.Test;

import modelo.carrera.Conductor;
import modelo.comportamiento.AccionRecomendada;
import modelo.comportamiento.Comportamiento;
import modelo.comportamiento.Conciencia;
import modelo.comportamiento.acciones.Acelerar;
import modelo.geometria.Vector;
import modelo.seniales.ColorSemaforo;
import modelo.seniales.EsquinaSemaforo;
import modelo.seniales.Semaforo;
import modelo.vehiculos.Automovil;
import modelo.vehiculos.SentidoVehiculo;

public class TestSituaciones  {
		
	//TODO: Resolver TestSemaforoRojo_ADistanciaLejana_GeneraAccionFrenarConPrioridadBaja
	@Test
	public void TestSemaforoRojo_ADistanciaLejana_GeneraAccionFrenarConPrioridadBaja(){
		// creacion de contexto
		Semaforo semaforo = new Semaforo(1, new Vector(1,20), 1, EsquinaSemaforo.FIN, ColorSemaforo.ROJO, 5);
	
		Comportamiento comportamiento = new Comportamiento(new Conciencia());
		Conductor conductor = new Conductor(comportamiento);
		Vector posicionInicial = new Vector(1,1);
		Vector posicionFinal = new Vector(1,21);
		SentidoVehiculo sentidoVehiculo = SentidoVehiculo.NORTE;
		double largo = 2;
		double ancho = 1;
		double vision = 10;
		double velocidadActual = 30;
		double velocidadMaxima = 100;
		double aceleracionMaxima = 5;
		double frenadoMaximo = 50;
		Automovil auto = new Automovil(conductor, posicionInicial, posicionFinal, sentidoVehiculo, largo, ancho, velocidadActual, velocidadMaxima, aceleracionMaxima, frenadoMaximo);
		auto.manejar(new Acelerar(60, 4));
		while (auto.getPosicion().getY() < 4)
			auto.activar();
		
		// ejecucion accion a testear
		AccionRecomendada accionRecomendada = semaforo.analizarSituacion(auto);
		
		// resultados esperados
		/*Assert.assertNotNull(respuesta);
		Assert.assertEquals(Prioridad.BAJA, accionRecomendada.getPrioridad());
		Assert.assertEquals(Accion.FRENAR, accionRecomendada.getAccion());
		*/
	}
}
